Rails 7.2: Better production defaults, Dev containers, new guides design, and more!
https://rubyonrails.org/2024/8/10/Rails-7-2-0-has-been-released
より良い本番環境のデフォルト設定
Rails 7.2では、より効率的なアプリケーションを構築するために、本番環境のデフォルト設定が改善されています。
Rails 7.2では、Ruby 3.3以降を使用している場合、YJITがデフォルトで有効になります
YJITはRuby 3.1以降のCRubyに搭載されているRubyのJITコンパイラです
Railsアプリケーションにおいて15~25%の待機時間の改善を提供するなど、パフォーマンスの大幅な向上が期待できます
Pumaのデフォルトのスレッド数を5から3に変更されました
この変更は、スレッド数が多すぎる場合にRubyがグローバルVMロック(GVL)の解放を待つ時間を短縮し、待機時間(リクエスト応答時間)を改善するためのものです
デフォルトのDockerfileには、メモリ割り当ての最適化を目的としてjemallocが含まれるようになりました
jemalloc(ジェマロック)は、高性能なメモリアロケータです
特に大規模なシステムやマルチスレッド環境でのパフォーマンス向上を目指して設計されています
アプリケーション向けの開発コンテナ構成
コンテナを使ってフル機能の開発環境を簡単に用意できるようになります。
Rails 7.2ではコンテナ構成のジェネレーターが追加されています。ジェネレーターによって.devcontainerフォルダを生成し、その中にはDockerfile、docker-compose.yml、devcontainer.jsonなどが生成されます。
コンテナ構成には主に次の4点が含まれています:
1. Kredis、ActionCable などの Redis コンテナー
2. データベース (SQLite、Postgres、MySQL または MariaDB)
3. システムテスト用のヘッドレス Chrome コンテナ
4. ローカル ディスクを使用するように構成され、プレビュー機能が動作する Active Storage
新しいアプリケーションを開発コンテナで生成するには、以下のコマンドを実行できます:
code:bash
rails new myapp --devcontainer
既存のアプリケーション向けには、devcontainerコマンドが使用可能です:
code:bash
rails devcontainer
詳細については、「Getting Started with Dev Containers — Ruby on Rails Guides」を参照してください。
Railsガイドの新デザイン
Railsガイドのデザインが新しくなりました。ガイドのデザインは2009年以来ほとんど手を加えられておらず、その点についてのフィードバックも多かったそうです。
具体的には次の変更が反映されます:
クリーンでシンプルなデザイン
ホームページとより一貫性のあるフォント、配色、ロゴ
更新されたアイコン
シンプルになったナビゲーション
スクロール時に「章」ナビゲーションバーが固定される
ビフォーアフターの画像については、「Ruby on Rails — Rails Guides get a facelift」をご覧ください。
その他の改善点
Rails 7.2には、他にも多くの改善や新機能が含まれています。以下はいくつかの注目ポイントです:
デフォルトでブラウザバージョンガードを追加。
Ruby 3.1を新たな最小バージョンに設定。
デフォルトでProgressive Web Application(PWA)ファイルを追加。
デフォルトでomakase RuboCopルールを追加。
GitHub - rails/rubocop-rails-omakase: Omakase Ruby styling for Rails
新しいアプリケーションにデフォルトでGitHub CIワークフローを追加。
新しいアプリケーションにデフォルトでBrakemanを追加。
トランザクション内でのジョブのスケジューリングを防止。
トランザクションごとのコミットおよびロールバックコールバックを追加。
bin/setupでpuma-devの設定を提案。
詳しくは「Ruby on Rails 7.2 Release Notes — Ruby on Rails Guides」をご確認ください。